#ifndef PAIR_H
#define PAIR_H

#include <iostream>

class Pair {
    int left, right;
public:
    // Constructors & destructor
    Pair();
    Pair(int left, int right);
    Pair(const Pair &other);
    ~Pair();

    // Setters & getters
    void setLeft(int v);
    void setRight(int v);
    int getLeft() const;
    int getRight() const;

    // Overloads
    Pair & operator=(const Pair &other);
    Pair & operator=(Pair &&other) noexcept;

    // Friend functions
    friend std::ostream & operator<<(std::ostream &os, const Pair &pair);
    friend std::istream & operator>>(std::istream &is, Pair &pair);

    // Public methods (interface)
    int mul() const;
};

std::ostream & operator<<(std::ostream &os, const Pair &pair);
std::istream & operator>>(std::istream &is, Pair &pair);

#endif // PAIR_H
